//原生node api实现将一个普通的css文件转换为一个压缩css的文件

//三个实现过程 读取流 转换流 写入流

const fs = require('fs')
const {Transform} = require('stream')


exports.default = () => {

    //文件读取流
    const read = fs.createReadStream('src/tmp.css')
    //文件写入流
    const write = fs.createWriteStream('src/tmp.min.css')

    //文件转换
    const transform = new Transform({
        transform: (chunk, encoding, callback) => {
            //核心过程实现
            //chunk  => 读取流中读取到的内容（Buffer）
            const input = chunk.toString()

            const output = input.replace(/\s+/g, '').replace('/\/\*.+?\*//g', '')

            //callback为错误优先的函数 如果有错误 会在又想将错误错位参数传入， 没有的话就写入null
            callback(null, output)
        }
    })

    //将读取出来的文件流写入到写入文件流
    read
        .pipe(transform)  //转换
        .pipe(write)  //写入

    //将文件流状态返回  gulp根据流的状态判断任务是否执行完成
    return read
}